package com.modelo.entity;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "obra", catalog = "firmes")
public class Obra implements java.io.Serializable {

	private static final long serialVersionUID = 1L;

	private String cliente;
	private Date fechaAlta;
	private Date fechaBaja;
	private Integer idObra;
	private String nombre;
	private Set<ObraDocumento> obraDocumentos = new HashSet<ObraDocumento>(0);
	private Set<ObraProveedor> obraProveedors = new HashSet<ObraProveedor>(0);
	private String poblacion;

	public Obra() {
	}

	public Obra(Integer idObra, String nombre, String poblacion, Date fechaAlta) {
		this.idObra = idObra;
		this.nombre = nombre;
		this.poblacion = poblacion;
		this.fechaAlta = fechaAlta;
	}

	public Obra(Integer idObra, String nombre, String cliente, String poblacion, Date fechaAlta,
			Date fechaBaja, Set<ObraProveedor> obraProveedors, Set<ObraDocumento> obraDocumentos) {
		this.idObra = idObra;
		this.nombre = nombre;
		this.cliente = cliente;
		this.poblacion = poblacion;
		this.fechaAlta = fechaAlta;
		this.fechaBaja = fechaBaja;
		this.obraProveedors = obraProveedors;
		this.obraDocumentos = obraDocumentos;
	}

	@Column(name = "Cliente", length = 100)
	public String getCliente() {
		return this.cliente;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "FechaAlta", nullable = false, length = 10)
	public Date getFechaAlta() {
		return this.fechaAlta;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "FechaBaja", length = 10)
	public Date getFechaBaja() {
		return this.fechaBaja;
	}

	@Id
	@GeneratedValue
	@Column(name = "idObra", unique = true, nullable = false)
	public Integer getId() {
		return this.idObra;
	}

	@Column(name = "Nombre", nullable = false, length = 200)
	public String getNombre() {
		return this.nombre;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "obra")
	public Set<ObraDocumento> getObraDocumentos() {
		return this.obraDocumentos;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "obra")
	public Set<ObraProveedor> getObraProveedors() {
		return this.obraProveedors;
	}

	@Column(name = "Poblacion", nullable = false, length = 100)
	public String getPoblacion() {
		return this.poblacion;
	}

	public void setCliente(String cliente) {
		this.cliente = cliente;
	}

	public void setFechaAlta(Date fechaAlta) {
		this.fechaAlta = fechaAlta;
	}

	public void setFechaBaja(Date fechaBaja) {
		this.fechaBaja = fechaBaja;
	}

	public void setId(Integer idObra) {
		this.idObra = idObra;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public void setObraDocumentos(Set<ObraDocumento> obraDocumentos) {
		this.obraDocumentos = obraDocumentos;
	}

	public void setObraProveedors(Set<ObraProveedor> obraProveedors) {
		this.obraProveedors = obraProveedors;
	}

	public void setPoblacion(String poblacion) {
		this.poblacion = poblacion;
	}

}